RLS – гибкая и тонкая настройка ограничений доступа к данным



RLS в 1C - ограничения доступа на уровне записей

Классическая задача: открыть пользователю доступ к какому-либо объекту, но не ко всем элементам / документам, а только к некоторым.

Например, чтобы менеджер видел отчеты только по своим клиентам.

Или это может быть ограничение “все, кроме некоторых”.
Или ограничение не на справочники/документы, а на данные регистров

Например, чтобы пользователи ни одним отчетом не могли вытащить данные по выплатам партнерам.

По сути – это тонкая и очень гибкая настройка “что можно видеть этому пользователю, а о чем ему и не нужно догадываться”.

Почему именно RLS?

На большинстве внедрений требуется для разных пользователей установить различные уровни доступа к информации в базе.

Это либо требования конфиденциальности, либо чтобы не испортить данные, за которые пользователь не отвечает и, возможно, даже не разбирается в них (например, бухгалтерские данные для менеджера по продажам).

В конфигурациях за возможные права доступа к данным отвечают специальные объекты метаданных – роли. Каждому пользователю информационной базы назначается одна или несколько ролей. Они определяют, возможны ли операции с конкретными объектами метаданных (чтение, запись, проведение и т.д.).

Но это не все.

Часто бывает необходимо не просто открыть/запретить доступ к определенному объекту, а ограничить доступ к части данных в нем.

Только при помощи ролей решить такую задачу нельзя – для этого реализован механизм ограничения доступа на уровне записей (RLS).

Ограничения представляют собой условия, при выполнении которых действие над данными (чтение, запись и т.д.) будет разрешено. – так можно ограничить доступ не к объекту в целом, а только к части его данных.

Про RLS – более подробно: 8 видео и PDF

Поскольку это распространенная задача администрирования 1С – предлагаем посмотреть более детальные материалы:

PDF с вводной информацией.

21 страница, которые нужно прочесть сначала.

Видео 01:

01. Ограничение доступа к данным при помощи ролей

Ограничение доступа к данным при помощи ролей

В этом видео рассказывается, как ограничивается доступ к данным при помощи ролей. Уточняется, что роли ограничивают доступ к виду объектов информационной базы (отдельный справочник, но не конкретные элементы справочника).

Видео 02:

02. Ограничение доступа на уровне записей (RLS)

Ограничение доступа на уровне записей (RLS)

В этом видео рассказывается о механизме ограничений доступа на уровне записей (RLS), когда можно настроить доступ не ко всему справочнику в целом, а к отдельным его элементам, в зависимости от хранящихся в информационной базе данных. Подобные ограничения прописываются в ролях.

Видео 03:

03. Реализация ограничения доступа на уровне записей для справочника Контрагенты

Реализация ограничения доступа на уровне записей для справочника Контрагенты

В этом видео рассказывается, как в демонстрационной конфигурации «Управляемое приложение» настроить доступ менеджеров только к собственным контрагентам, закрепленным за ними.

Видео 04:

04. Принцип работы ограничений доступа на уровне записей на низком уровне

Принцип работы ограничений доступа на уровне записей на низком уровне

В этом видео рассказывается, как платформа трансформирует запросы, передаваемые для выполнения на сервер СУБД, при наличии ограничений доступа на уровне записей.

Видео 05:

05. Совместное применение нескольких ограничений доступа на уровне записей

Совместное применение нескольких ограничений доступа на уровне записей

Пользователю информационной базы может быть назначено несколько ролей. При этом в каждой роли могут быть свои ограничения доступа на уровне записей. В этом видео рассказывается, как ведет себя система при наложении ограничений.

Видео 06:

06. Наложение ограничений методом ВСЕ

Наложение ограничений методом ВСЕ

В этом видео описывается первый способ наложения ограничений на уровне записей – метод ВСЕ. При этом, если в выборку попадают записи, к которым доступ ограничен, будет выведено сообщение об ошибке.

Видео 07:

07. Наложение ограничений методом РАЗРЕШЕННЫЕ

Наложение ограничений методом РАЗРЕШЕННЫЕ

В этом видео описывается первый способ наложения ограничений на уровне записей – метод РАЗРЕШЕННЫЕ. При этом в выборку попадут только те записи, к которым у пользователя есть права доступа.

Видео 08:

08. Исправление ошибки, возникающей из-за наложения прав доступа на уровне записей

Исправление ошибки, возникающей из-за наложения прав доступа на уровне записей

В этом видео рассматривается, как при помощи ключевого слова РАЗРЕШЕННЫЕ исправить ошибку, возникающую под пользователем с ограниченными правами.

Не пропустите – все сразу и в полном объеме!

Этот курс позволит решать ВСЕ задачи по развертыванию и поддержке информационных систем на 1С.

Вот несколько тем из курса:

  • Установка и обновление платформы «1С:Предприятие 8» – ручная и автоматическая, под Windows и Linux
  • Автоматический запуск для выполнения регламентных операций
  • Обновление конфигураций из пользовательского режима
  • Обновление нетиповых конфигураций. Как избежать проблем при обновлении измененных типовых конфигураций
  • Создание собственных cfu-файлов поставки
  • Инструменты БСП: внешние формы, обработки заполнения документов и т.п.
  • Использование бесплатной СУБД PostgreSQL
  • Установка и запуск кластера серверов 1С:Предприятие 8
  • Утилита администрирования для настройки кластера и рабочих серверов
  • Настройка RLS на примере УПП 1.3 и ERP 2
  • Что делать, если данные в ИБ повреждены
  • Настройка обменов данными между конфигурациями
  • Организация групповой разработки
  • Настройка и использование аппаратных ключей защиты
  • Программные лицензии 1С: установка и привязка к внешнему оборудованию
Этот курс актуален для всех, кто внедряет или поддерживает 1С.

Даже на 3-5 пользователей. Тем более – если их хотя бы десяток…

Вам в любом случае когда-то придется разворачивать 1С, настраивать резервирование, права доступа, различные режимы запуска, тестировать целостность баз, обеспечивать работу серверов и т.д.

И лучше это сразу делать правильно.

Чтобы потом не было “…! Ну что за …! Твою же …!” – и прочих выражений сожаления :)

Курс по Администрированию систем на 1С.
Описание курса, программа и оформление заказа

Кроме того, у нас появился специализированный курс – Настройка и доработка прав доступа, профилей пользователей и RLS в типовых конфигурациях УТ 11.4 (11.3), КА 2.4 (2.2) и 1C:ERP 2.4 (2.2).

Комментарии / обсуждение (171):

  1. Kg2

    Возможно ли ограничить доступ пользователю к 1с ПО ДАТЕ, Например запретить пользователю получать какие либо учетные данные отчетами (ОСВ и т.д) меньше определенной даты?

    • Василий Ханевич

      Добрый день!
      В типовых конфигурациях (например, в БП) нет такой возможности.
      С точки зрения механизмов платформы для документа при помощи RLS можно задать ограничения доступа по дате документа.
      А вот для регистров бухгалтерии при описании ограничения доступа можно использовать только измерения регистра (для БП это будет измерение Организация регистра бухгалтерии Хозрасчетный). Поэтому для регистра бухгалтерии такое ограничение не получится сделать.

  2. Анварджон

    Здравствуйте, подскажите пожалуйста. 1с 9.3 ут 11.4 пользуемся Моби-с и внутри этого обрабочика есть агенты, пользователи. Можно ли их привязать к пользователям чтоб каждый менеджер видел только своих агентов и привязанных к ним клиентов?

    • Василий Ханевич

      Добрый день!
      Нужно обращаться к разработчикам этого решения. В самой конфигурации УТ 11 есть ограничения доступа на уровне записей по пользователям и партнерам.

  3. Vita_sh

    Добрый день! А расскажите, пожалуйста, про параметр ОграничиватьДоступНаУровнеЗаписейУниверсально. Нигде информации толком не нашла

    • Василий Ханевич

      Добрый день!
      Это так называемый “производительный вариант RLS” из БСП. Включается он разделе Администрирование – Настройки пользователей и прав:
      Варианты работы
      Основная идея – увеличить производительность запросов с ограничениями доступа за счет упрощения самих ограничений. Но для работы такого режима необходим расчет и хранения дополнительных объектов в базе данных – ключей доступа. Поэтому запись данных может занимать больше времени, а изменения в правах доступа могут применяться не сразу, а с задержкой.

      Подробнее можно узнать на ИТС – Выбор производительного или стандартного варианта работы и в целом в документации к подсистеме БСП Управление доступом.

      • Vita_sh

        Спасибо! В ИТС есть такое “Производительный вариант основан на предварительном расчете прав доступа. Он позволяет достичь высокой производительности запросов с RLS, так как добавляет простой и статический фрагмент к текстам запросов в ролях”. Что подразумевается под “простым и статическим фрагментом”?

        • Василий Ханевич

          Для примера беру конфигурацию УНФ (можете использовать и любую другую конфигурацию на базе БСП). В роли ЧтениеЗаказовПокупателей для документа ЗаказПокупателя ограничение доступа выглядит следующим образом:

          #Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
          #ДляОбъекта("")
          #Иначе
          #ПоЗначениям("Документ.ЗаказПокупателя", "", "",
              "Организации", "Организация", "ГруппыКонтрагентов", "Контрагент",
              "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "")
          #КонецЕсли

          Если используется стандартный вариант, то применяется шаблон ПоЗначениям. При производительном варианте – шаблон ДляОбъекта.
          В этой же роли смотрим текст этих шаблонов и анализируем. Либо можно при помощи технологического журнала получить реальные тексты запросов, которые отправляются на сервер СУБД.

          1. Шаблон ПоЗначениям
          Недостаток – чем больше видов доступа настроено для объекта, тем больше результирующий текст запроса и количество соединений в нем. Это может привести к выбору неоптимального плана запроса.

          2. Шаблон ДляОбъекта
          Здесь используются другие объекты метаданных для проверки прав доступа (регистры сведений КлючиДоступаКОбъектам и КлючиДоступаПользователей). Такой подход позволяет избежать дополнительных соединений при увеличении количества видов доступа, настраиваемых для объекта. Текст запроса для проверки прав доступа будет фиксированным.
          Это и значит “простой и статический фрагмент”.

  4. Александр

    Добрый день!
    Используется конфигурация 1С:ERP 2.4. Учет в базе ведется более 3 лет, 150 пользователей.
    Механизм ограничения доступа на уровне записей ранее не был включен. При включении опции “Ограничивать доступ на уровне записей” предупреждается, что выполнение заполнения данных при этом будет выполняться частями и может замедлить работу программы.
    Вопрос 1. Заполнение данных, пусть и частями, будет выполнено один раз?
    В курсе «Настройка и доработка прав доступа, профилей пользователей и RLS в типовых конфигурациях УТ 11.4 (11.3), КА 2.4 (2.2) и 1C:ERP 2.4 (2.2)» говорится, что при включенной указанной опции работа пользователей может быть замедлена в части работы интерфейса.
    Вопрос 2. На сколько работа пользователей может быть замедлена, при размере базы 300 Гб?

    • Василий Ханевич

      Добрый день!
      1. Для того, чтобы работали ограничения доступа на уровне записей, в служебных регистрах сведений должны быть записи, описывающие доступ к отдельным объектам.
      До включения указанной галочки в регистрах не было нужных записей, значит, первоначально нужно сформировать эти записи по всей базе, затем поддерживать регистр в актуальном состоянии по мере заполнения базы новыми данными.
      Для выполнения этого действия в конфигурациях на базе БСП (ERP как раз к таким относится) существует специальное регламентное задание, которое выполнит первоначальное заполнение (разовая операция), затем будет доформировывать записи для новых объектов (это уже будет регулярная операция, которая должна часто выполняться, чтобы для всех новых объектов базы были сформированы записи в регистрах, отвечающих за ограничения доступа).

      2. Замедление работы зависит от нескольких факторов – какой режим ограничений будет выбран (стандартный и производительный), а также какое количество групп доступа будет у каждого пользователя. В общем случае – чем больше групп доступа у пользователя, тем сложнее может получиться запрос к СУБД, который извлекает данные из базы.
      Поэтому рекомендуется провести нагрузочное тестирование на копии базы в условиях, приближенных к реальной работе пользователей. Тогда Вы точно сможете оценить степень замедления работы системы.

  5. Rif

    Добрый день!
    Подскажите, пожалуйста, как можно с помощью шаблонов ограничения доступа ограничить доступ к данным некоторых отчетов. Например, есть профиль Менеджер по продажам, состоящий из нескольких ролей, у которого настроено ограничение доступа к группе партнеров. Исключения настроены в группе доступа. В отчете, например, Воронка продаж, нужно установить ограничение на разрешенную группу партнеров. А в другом отчете, например, Анализ встреч, по текущему пользователю, но также для пользователя с данным профилем.

    • Василий Ханевич

      Добрый день!
      В типовых конфигурациях на базе БСП (например, УТ 11) в ролях используются стандартные шаблоны ограничений доступа из БСП.
      Они универсальные, поэтому для решения большинства задач их не требуется менять. Предполагается, что настройку нужно выполнять в пользовательском режиме, создавая профили и группы доступа.
      Если Вы ограничиваете доступ к справочнику Партнеры, оставляете доступными определенные группы, то в форме списка справочника, в списке документов, в отчетах будут видны данные только по этим разрешенным партнерам. Других (запрещенных) партнеров и данных по ним увидеть нельзя.
      Если нужно в отчетах видеть не всех разрешенных партнеров, а только часть из них, то можно настроить отборы в отчете и сохранить такой вариант отчета. В отборе указать конкретных разрешенных партнеров, тогда отчет будет формироваться только по ним. Сохраненный вариант отчета можно разместить в Избранном, тогда пользователь сможет быстро формировать его, не выполняя предварительную настройку.

  6. Novecheck

    Добрый день, в учебной версии при использовании rls столкнулся с проблемой при записи или проведении документа (у пользователя недостаточно прав на использование операций над базой данных), причём в полной версии 1с данной проблемы не встречал.
    В журнале регистраций ссылается на отказ доступа (действие-чтение)
    Ограничение делал простое:

    ГДЕ Клиент.Пользователь=&ТекущийПользователь

    Как можно решить данную проблему?
    Заранее огромное спасибо!

    P.S.: не судите строго я недавно начал изучать 1с.

    • Вячеслав Вязигин

      День добрый!

      У учебной версии нет ограничений по RLS. Проверяйте, скорее всего у пользователя действительно недостаточно прав на использование операций над базой данных.

      • Novecheck

        Добрый день!
        Хотел уточнить, при установки ограничения по текущему пользователю на документ, сам пользователь проводить свои документы может или он их сможет только просмотреть и ему всё же будет отказано в доступе, как в моем случае?

        • Вячеслав Вязигин

          День добрый!

          Это зависит от-того на какое право наложено ограничение, чтение или запись.

          • Novecheck

            Ограничение накладываю на чтение, после чего получаю ошибку: “У пользователя недостаточно прав на исполнение операции над базой данных”.
            Журнал регистрации ссылается на отказ в доступе. При попытке чтения данных.

            • Вячеслав Вязигин

              День добрый!

              Ваш ответ исчерпывает сам себя. Наложили ограничение на чтение, получили отказ в доступе при попытке чтения данных.

  7. Илья

    Добрый день!
    Полезен ли курс для чистого консультанта, без навыков программирования? Впереди проект со сложной настройкой прав и RLS.

    • Вячеслав Вязигин

      День добрый!

      Если Вы не просто консультант, а дополнительно еще и аналитик, ставящий программистам задачи на разработку, то курс будет безусловно полезен. Если “чистый” консультант и все задачи реализуете штатными механизмами, тогда смысла нет.

  8. Павел

    Приветствую Василий, есть задача в ут 10.3 ограничить доступ пользователей на доп свойства справочника контрагентов сейчас RLS используется для доступа к контрагентам не могу сообразить на какой объект лучше написать правило ограничения на регистрсведений.ЗначенияСвойствОбъектов или на планВидовХарактеристик.СвойстваОбъектов?

    • Василий Ханевич

      Добрый день!
      Нужно ограничивать оба объекта – и ПВХ СвойстваОбъектов, и регистр сведений ЗначенияСвойствОбъектов.
      Потому что пользователю с ограниченными правами нужно видеть только выборочные, разрешенные элементы ПВХ, а также записи в регистре только по этим элементам ПВХ и по разрешенным контрагентам.

      • Павел

        Приветствую.
        Хотел интегрировать в стандартный механизм ограничения по контрагентам ут10.3 не могу разобраться синтаксисом у вас в лекции пример ограничения виде запроса а в Ут ввиде таблицы: #таблицаОсновногоВидаОбъектаДоступа(“Контрагенты”,”ГруппыдоступакКонтрагенту”,”ИлиЭтоГруппа”) хотел уточнить как лучще поступить делать ограничичение для свойств отдельным условием (запросом)или возможно дописать чтобы они попадали в эту таблицу?

        • Василий Ханевич

          Добрый день!
          Конструкция, начинающаяся с #, – это шаблон ограничения доступа. Увидеть шаблоны в форме роли на закладке Шаблоны ограничений:
          Роли
          Шаблон может содержать параметры, которые выделяются в его тексте при помощи символа #.
          Платформа подставляет значения параметров в шаблон ограничения. Так формируется готовый текст ограничения доступа, который и будет использоваться при работе.

          В Вашем случае может быть два варианта решения:
          1. Вы не используете сложные типовые шаблоны, самостоятельно прописываете собственное ограничение при помощи простого запроса.
          2. Вы анализируете существующие в типовой конфигурации шаблоны, подбираете подходящий, используете его. Можно поискать в конфигурации похожие примеры в ролях, взять их в качестве образца.

  9. Роман

    Добрый день. Имеется такая задача, есть ветка номенклатуры, которая привязана к магазину, и всю номенклатуру в этой группе и подгруппах необходимо разрешить изменять только 1-2м пользователям.
    У соответствующей роли можно убрать галку прав на чтение, но как сделать, что бы эти правила распространялись только на группу магазин, а не блокировали абсолютно все.
    Спасибо за помощь и видео, очень интересно!

    • Василий Ханевич

      Добрый день!
      Предлагаю сделать регистр сведений РазрешеннаяНоменклатура, куда записывать все номенклатуры, которые можно изменять указанным пользователям. Например, в регламентном задании выбираем номенклатуры из определенных групп, записываем в регистр. Получается что-то похожее на состав сегментов номенклатуры из УТ 11.
      Затем в роли для справочника Номенклатура для права Изменение прописать ограничение доступа, например, вот так:

      Номенклатура ГДЕ Номенклатура.Ссылка В
                  (ВЫБРАТЬ
                      РазрешеннаяНоменклатура.Номенклатура КАК Номенклатура
                  ИЗ
                      РегистрСведений.РазрешеннаяНоменклатура КАК РазрешеннаяНоменклатура)

      Т.е. пользователю с этой ролью можно изменять только те элементы справочника Номенклатура, которые содержатся в указанном регистре.

      • Роман

        Спасибо за совет, сделал как вы сказали, все работает! Единственное, не смог самостоятельно доработать. Не поможете довести до ума?)

        В РегистреСведений в Измерения добавил в Данные свойство “СправочникСсылка.Номенклатура” ЗапрещеннаяГруппаНоменклатуры, установил ВыборГрупп, создал форму и выставил тип “ВыборГрупп”.
        Это все работает, выбираются только группы, как и нужно.

        У меня УТ 10.3, иду в Операции – Регистр Сведений – выбираю свой. Там добавляю группы, все ОК!

        Единственное, не понимаю, как добить условие в Роли ограничение доступа Изменение. Запрет редактирование всего, что есть в РегистреСведений, по группам. Разматывать всю иерархию не нужно, достаточно только 1 погружение, мне не влом добавить все подгруппы. Просто как-то нужно правильно свести код:

        Выборка = Справочники.Номенклатура.Выбрать(ЗапрещеннаяГруппаНоменклатуры);
        Пока Выборка.Следующий() Цикл
        Наименование = Выборка.Наименование;
        КонецЦикла;

        Номенклатура ГДЕ НЕ Номенклатура.Ссылка В
        (ВЫБРАТЬ
        ЗапрещеннаяНоменклатура.Номенклатура КАК Номенклатура
        ИЗ
        РегистрСведений.ЗапрещеннаяНоменклатура КАК ЗапрещеннаяНоменклатура)

        • Василий Ханевич

          Отлично, что заработало!
          Поскольку в регистре хранятся группы номенклатуры, а не элементы, то будем работать с реквизитом Родитель.
          Ограничение доступа может выглядеть, например, вот так:

          Номенклатура ГДЕ НЕ Номенклатура.Родитель В
                      (ВЫБРАТЬ
                          ЗапрещеннаяНоменклатура.Номенклатура КАК Номенклатура
                      ИЗ
                          РегистрСведений.ЗапрещеннаяНоменклатура КАК ЗапрещеннаяНоменклатура)
          • Роман

            Добрый человек, все работает как нужно и спасибо еще раз за помощь! Вы крутые!

            Но, юзвери нашли лазейку, они создают новую номенклатуру в разрешенных местах и перемещают в запрещенную группу. Следовательно в запрещенной группе ее можно править.
            Не могу понять, куда добавить наше условие: “при перемещении смотреть ограничение на запрещенные группы”.

            • Василий Ханевич

              Поскольку перемещение номенклатуры в другую папку – это запись в базу, для справочника Номенклатура нужно создать ограничение доступа для права Изменение:

              Номенклатура ГДЕ НЕ Номенклатура.Родитель В
                          (ВЫБРАТЬ
                              ЗапрещеннаяНоменклатура.Номенклатура КАК Номенклатура
                          ИЗ
                              РегистрСведений.ЗапрещеннаяНоменклатура КАК ЗапрещеннаяНоменклатура)

              Приложил пример – ЗапрещеннаяНоменклатура.zip.
              В этой базе в папке Запрещенные нельзя создать новые элементы, переместить в нее другие элементы тоже нельзя.

              • Дмитрий

                А если надо запретить доступ к одной папке номенклатуры с названием “Аренда”, то можно так сделать? В галочке “Чтение” поставить “Прочие поля” и прописать ограничение доступа:
                Номенклатура ГДЕ НЕ Номенклатура.Наименование = “АРЕНДА”

                • Василий Ханевич

                  Да, так можно сделать. Но надежнее вместо наименования использовать ссылку на номенклатуру. Например, как в предыдущем сообщении с использованием регистра сведений с запрещенными номенклатурными позициями. Или через параметр сеанса.
                  Также указанное ограничение доступа запрещает читать группу с наименованием Аренда, но не запрещает читать элементы, входящие в нее. Например, если в списке будут выводиться данные без иерархии, то все элементы из этой папки будут доступны. Нужно подумать, устраивает ли такое поведение или нужно доработать ограничения доступа.

  10. Vita_sh

    Добрый день! Наблюдаю интересную картину. Есть 3 типа заказов. По ним есть счета. В один счет могут входить разные типы заказов. Заказы перечислены в табличной части. На заказ с Типом1 у пользователя права чтение/запись, на Тип2 только чтение, на Тип3 ничего. Так вот если в одном счете есть Тип1 и Тип2, то счет можно записать (да как???). Если только Тип2, то записать нельзя. Если Тип1 и Тип3, то записать тоже нельзя. Я не понимаю, почему дает записать счет с типами заказов Тип1 и Тип2. Что это за метаморфозы?? Как я понимаю, счет это у нас целостная сущность. Внутри нее есть подсущности с разными правами доступа. Возможно, есть какие-то приоритеты, по которым RLS выбирает, какой уровень доступа наложить на счет?

    • Василий Ханевич

      Добрый день!
      Трудно ответить однозначно без анализа конкретной базы. Поэтому я бы порекомендовал в первую очередь упростить всё – создать пустую, чистую базу, в ней создать нужные объекты метаданных (счет, различные виды заказов), настроить в роли ограничения доступа на уровне записей. Отсечь всё лишнее, чтобы остальные моменты не оказывали влияния на права доступа. И на таком упрощенном примере потестировать поведение системы.
      Также важно, что если в одной роли есть несколько ограничений, то такие ограничения, полученные из одной роли, объединяются при помощи И. Возможно, в Вашем случае это также повлияло на полученный результат.

  11. ivprovotorov

    Добрый день! Попытался в Демонстрационная конфигурация “Библиотека стандартных подсистем”, редакция 2.4 (2.4.6.241) ,платформа 8.3.14.1565 ,реализовать добавление нового вида доступа. Через изменение ПриЗаполненииВидаДоступа , ПриЗаполненииИспользованияВидаДоступа и определяемого типа ЗначенияДоступа. Но что-то не получилось. Точка остановки в процедуре ПриЗаполненииВидовДоступа даже не отрабатывет. В чем может быть причина?

  12. Foat

    Может ли RLS помочь в ситуации , когда нужно одной и той же роли разрешить или запретить Запись и Проведение документа по Отбору ?

    • Василий Ханевич

      Добрый день!
      Да, можно ограничить запись документа в базу при помощи RLS. Для этого нужно будет настроить ограничение доступа в роли. Если условие выполняется, документ может быть записан в базу. Если условие не выполняется, документ нельзя записать.
      При помощи RLS нельзя ограничить проведение, можно только Чтение, Добавление, Изменение, Удаление.

      • Foat

        Но помещать такого рода алгоритм, наверно не стоит , например:
        В рлс , перед изменением Документа , Рлс контролирует остаток после записи и если Отрицательный остаток , то не даст пользователю изменить документ . Да я конечно понимаю , что для этого есть кучу и других мест

        • Василий Ханевич

          Нет, такой алгоритм не стоит использовать в выражениях ограничений доступа из соображений производительности.
          Эти действия лучше выполнять при проведении документа.

  13. kvt500

    А вот есть еще “Механизм разделения данных”. Как он согласуется с RLS?
    Это механизм который должен заменить RLS? Как там дела обстоят в новых флагманских решениях, по-прежнему используют RLS или перешли на механизм разделения данных?

    • Василий Ханевич

      Добрый день!
      Механизм разделения данных и RLS – это два разных механизма. Они не взаимоисключают друг друга, могут использоваться совместно.

      Разделение данных организуется при помощи объекта метаданных Общий реквизит (он появился в платформе 8.2.14), у которого свойство “Разделение данных” имеет значение “Разделять”. Этот механизм позволяет разделять единую информационную базу на отдельные области, при этом пользователи будут работать в единой общей базе, но независимо друг от друга.
      Подробнее про общие реквизиты можно прочитать, например, здесь
      Работа с 1С в “облаках” как раз базируется на механизме разделения данных.

      Механизм ограничения доступа на уровне записей (RLS) позволяет ограничить доступ к части данных в определенной таблице. Например, видеть не всех контрагентов, а только тех, за которых отвечает конкретный менеджер.

      Механизм разделения данных и RLS могут использоваться совместно. Получается, что пользователь работает в отдельной области единой большой базы, и внутри этой области видит только часть данных (только своих контрагентов).
      Разделители используются в актуальных конфигурациях на базе БСП “1С:Бухгалтерия 8” (ред. 3.0), “1С:Управление торговлей 11” и т.д.:
      Общие реквизиты
      В этих же конфигурациях в ролях реализованы ограничения доступа на уровне записей. Таким образом, используются оба механизма.

  14. Анна

    Подскажите, а чтобы обратиться к реквизиту текущего пользователя в рлс напирмер физлицо то для этого отдельно нужно создавать параметр сеанса? ГДЕ ФизЛицо = &ТекущийПользователь (нужно физ лицо которое задано у пользователя

    • Василий Ханевич

      Добрый день!
      Да, для этого можно использовать параметр сеанса.

  15. Алексей

    Добрый день!
    Подскажите с помощью ЛСР возможно сделать Роль пользователей которая будет ограничивать доступ к данным(документы отчеты) за прошлые периода, оставляя только доступ за текущий год?

    • Василий Ханевич

      Добрый день!
      Да, так можно сделать.
      Создаем параметр сеанса НачалоТекущегоГода. Используем этот параметр в тексте запроса ограничения доступа:

      ГДЕ Дата >= &НачалоТекущегоГода

      Тогда пользователю будут доступны только документы, удовлетворяющие этому условию.

      • Алексей

        Если я правильно понимаю после создания параметра сеанса, можно создать копию роли Полные права, и в ней в шаблоне ограничений создать шаблон с текстом запроса:
        ГДЕ Дата >= &НачалоТекущегоГода

        Правильно понимаю?

        • Василий Ханевич

          Роль можно или скопировать, или отредактировать существующую.
          Для установки ограничений в редакторе роли используется таблица Ограничения доступа к данным:
          Ограничение доступа
          Также можно использовать шаблоны ограничений.

          • Алексей

            Спасибо за вашу помощь!
            Но я так понимаю это нужно будет устанавливать на каждый документ, а можно как то применить сразу ко всем документам? И как и если не сложно еще подскажите как можно применить к отчетам.
            Еще раз спасибо!

            • Василий Ханевич

              1. Можно назначить ограничение доступа сразу группе объектов метаданных.
              Для этого вызываем контекстное меню для корневого узла конфигурации, выбираем пункт Все ограничения доступа:
              Все ограничения доступа
              В открывшемся конструкторе добавляем новое ограничение. Указываем перечень объектов, на которые оно должно распространяться:
              Документы
              Задаем текст ограничения:
              Текст ограничения
              Этот текст присваивается всем выбранным объектам:
              Объекты

              2. Назначить ограничение доступа на отчеты или обработки нельзя, потому что они не хранятся в базе. Чтобы пользователь получал данные с учетом установленных ограничений доступа, в запросе нужно использовать ключевое слово РАЗРЕШЕННЫЕ.

              • Анна

                Добрый день.
                А не подскажете как то же самое сделать но с учетом и ограничений на уровне записей. Т.е задача есть дать пользователю права по определенным организациям за прошлый год. Как подружить условие по дате с типовыми шаблонами?

                • Василий Ханевич

                  Добрый день!
                  В такой задаче есть несколько сложностей.
                  Во-первых, для регистров накопления или бухгалтерии в текстах ограничений доступа можно использовать только измерения регистра:
                  Конструктор ограничений
                  Т.е. ограничения доступа для документов можно реализовать, как в комментарии выше, а данные в регистрах пользователь будет видеть за все периоды.
                  Возможна ситуация, когда учет в базе ведется, например, с 2010 года, а пользователю нужно разрешать смотреть только 2019 год. Непонятно, как в таком случае отображать остатки на начало 2019 года в оборотке или в других отчетах, ведь все обороты за прошлые периоды должны быть недоступны.
                  Значит, полноценное ограничение доступа по периоду не получится реализовать.

                  Во-вторых, в конфигурациях на базе БСП нет подходящего вида доступа, которым можно было бы воспользоваться.

                  Поэтому я бы попробовал решить данную задачу организационно, например, дать пользователю копию базы на начало текущего года или выгрузить документы по нужным организациям в отдельную базу.

    • Василий Ханевич

      Добрый день!
      Нет, это разные механизмы, расширения не являются альтернативой RLS.
      Расширения предназначены для выполнения доработок, при этом не изменяя саму конфигурацию, а RLS – для ограничения доступа на уровне данных.
      При помощи расширений конфигурации можно изменять роли и ограничения доступа на уровне записей.

  16. Leits

    Здравствуйте!

    У клиента все менеджеры строго имеют доступ только к своим клиентам и соответственно документы видят только по ним.

    Но бывают ситуации, что под определенный проект с клиентом работал другой менеджером и в документах проставляют его. Эти документы он логично же не видит, как и показатели по продажам.

    Можно ли сделать так, чтобы менеджеры видели документы в которых они стоят ответственными, в независимости от группы доступа?

    • Василий Ханевич

      Добрый день!
      Попробуйте использовать вид доступа Пользователи. У него есть одно постоянное разрешенное значение – это текущий пользователь сеанса.
      Дальше нужно выяснить, применяется ли этот вид доступа для требуемых типов документов. Здесь можно воспользоваться отчетом по правам доступа, который открывается из карточки пользователя. В нем посмотреть, применяется ли вид доступа Пользователи.
      Если не применяется, то остается разделять клиентов на сегменты по-другому или использовать другие виды доступа – по складам, по подразделениям и т.д.

  17. Boojin

    Здравствуйте! Имеется система — 1с 8.3 — УТ10.3. Суть дела. Хочу ограничить доступ кассиру к печати ценников, чтобы он мог только делать подбор и заполнение цен и количества, а вот исправлять цену после заполнение из системы он бы уже не могу.
    Я вношу исправление в конфи-ии в их назначенной роли, убираю «редактирование», оставляя только «просмотр» в табличной части. Но все равно они могут вносить изменения.

    • Василий Ханевич

      Добрый день!
      Ограничения прав на уровне реквизитов работают только для управляемых форм. А в УТ 10.3 используются обычные формы. В модуле формы этой обработки можно реализовать программное изменение доступности для поля с ценой в зависимости от прав пользователя.

  18. sun-alena@yandex.ru

    Добрый день! в ЕРП имеется справочник ФизическиеЛица, в котором содержится как общая так и персональная информация.
    Есть ли возможность ограничить доступ пользователей к реквизитам ИНН,СНИЛС, адрес проживания, паспортные данные и др…

    Или чтобы пользователи могли только выбирать элементы из этого справочника, но не могли зайти в саму карточку.

    • Василий Ханевич

      Добрый день!
      На сегодняшний день в типовой ERP такой возможности нет.
      Например, роль роль ЧтениеДанныхФизическихЛицЗарплатаКадры дает право на чтение и справочника ФизическиеЛица, и регистра сведений ДокументыФизическихЛиц (паспортные данные физлиц).
      Но технически это можно реализовать.
      Немного подробнее про права доступа в ЗУП 3 (он же используется в ERP) есть на сайте ИТС – Права доступа.

  19. Макс

    Добрый день,
    а в ерп 2.2 есть возможность настроить ограничение доступа на план счетов?
    надо разграничить бухгалтеров по доступам к отчетам по бух счетам(осв).
    это настраивается в конфигураторе?

    спасибо

    • Василий Ханевич

      Добрый день!
      Для регистра бухгалтерии в ограничениях доступа можно использовать только балансовые измерения, а не сами счета.

      • Макс

        а вы можете привести пример?
        не совсем понимаю реализацию таких ограничений

        • Василий Ханевич

          Вообще ограничения доступа на уровне записей представляют собой дополнительные условия к запросам, которые будут выполняться на уровне СУБД.

          Если открыть конструктор ограничения для регистра бухгалтерии, то можно увидеть, что доступно только измерение Организация:
          Конструктор ограничений

          В конфигурации БП 3.0 можно обратиться, например, к роли ДобавлениеИзменениеДанныхБухгалтерии, в ней реализовано ограничение доступа для регистра бухгалтерии.

          Также в комментарии обсуждается похожая задача.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Вход на сайт

Зарегистрироваться

Подтверждение регистрации будет отправлено на указанный e-mail.

Я подтверждаю, что ознакомлен(а) с Пользовательским соглашением, принимаю его условия и даю свое согласие на обработку моих персональных данных.

Восстановить доступ

E-mail или логин

Ссылка на создание нового пароля будет отправлена на указанный e-mail.